/**  
 * @author renbangjie renbangjie@126.com  
 * @date 2016年1月23日 下午3:26:16
 * @version V1.0  
 */
package com.ai.common.core.utils;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 处理集合
 * 
 * @author renbangjie renbangjie@126.com
 * @date 2016年1月23日 下午3:26:16
 */
public class CollectionUtils {

	 /** 
	 * @param <T>
	 * @date 2016年1月25日 上午11:38:42
	 * @param list
	 * @param field
	 * @return
	 * @throws Exception
	 *             Map
	 */
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static <K, V> Map<K, V> toMap(Collection list, String field)
			throws Exception {
		if (list != null) {
			Map<K, V> result = new HashMap<K, V>();
			for (Object object : list) {
				Field fd = BeanUtils.getClassField(field, object.getClass());
				fd.setAccessible(true);
				result.put((K) (fd.get(object)), (V) object);
			}
			return result;
		}
		return null;
	}

	/**
	 * 获取list集合中javabean对于的field的值的集合
	 * 
	 * @param list
	 * @param field
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static <T> List<T> getBeanFieldValues(Collection list,
			String... fields) throws Exception {
		if (list != null) {
			List<T> result = new ArrayList<T>();
			for (Object object : list) {
				for (String field : fields) {
					Field fd = BeanUtils.getClassField(field,
							object.getClass());
					fd.setAccessible(true);
					result.add((T) (fd.get(object)));
				}
			}
			return result;
		}
		return null;
	}

}
